N = 4096;

% 当点数 N 发生变化时，B 和 d 保持对应的变化就能保证程序的正确运行
% 实质是 G_hat 的长度需要更新
B = 64;
d = 2;
L = ceil(log2(N));
K = 6;
sigma = sqrt(50);
omega = B*6; % 滤波器长度

% 生成测试用信号
signal = gen_signal(N, K);

% SFT 预准备
[G, G_hat] = gen_filter(N, B, sigma, omega);
sigma_vec = gen_sigma_vector(L, N); 

% SFT
tic;
Z = sft(signal, N, B, L, d, K, sigma_vec, omega, G, G_hat);
sft_time = toc;

% FFT
tic;
F_signal = fft(signal);
fft_time = toc;

% 绘图
figure('NAME', 'main');
subplot(2,1,1);
plot(abs(F_signal)); title('FFT的结果');
subplot(2,1,2);
plot(abs(Z)); title('SFT的结果');

% 输出相关信息
fprintf('======================================\n');
fprintf('SFT用时：%.6f\n', sft_time);
fprintf('FFT用时：%.6f\n', fft_time);
fprintf('=================结束=================\n');